﻿// ------------------------------------------------------------------------
// 版权信息
// 版权归重庆虫儿飞科技有限公司所有。
// 所有权利保留。
// 官方网站：https://netokit.com
// 许可证信息
// Neto.Kit 项目主要遵循 MIT 许可证和 Apache 许可证（版本 2.0）进行分发和使用。
// 许可证的完整文本可以在源代码树根目录中的 LICENSE-APACHE 和 LICENSE-MIT 文件中找到。
//
// 使用条款
// 使用本代码应遵守相关法律法规和许可证的要求。
//
// 免责声明
// 对于因使用本代码而产生的任何直接、间接、偶然、特殊或后果性损害，我们不承担任何责任。
//
// 其他重要信息
// Neto.Kit 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。
// 有关 Neto.Kit 项目的其他详细信息，请参阅位于源代码树根目录中的 COPYRIGHT 和 DISCLAIMER 文件。
//
// 更多信息
// 请访问 https://netokit.com 获取更多关于 Neto.Kit 项目的许可证和版权信息。
// ------------------------------------------------------------------------

namespace Neto.Application;

public class ApiMenuInput : IValidatableObject
{
    public long? Id { get; set; }


    /// <summary>
    ///     节点类型(菜单、工具栏)
    ///     目录：Directory = 0,控制器：Controller=100,菜单：Menu=200,功能/方法：Action =300
    /// </summary>
    public PgType PgType { get; set; }

    /// <summary>
    ///     菜单名称
    /// </summary>
    public string Name { get; set; }

    /// <summary>
    ///     菜单ID，全局唯一标识
    /// </summary>
    public string Code { get; set; }

    /// <summary>
    ///     菜单父Code
    /// </summary>
    public string MenuPCode { get; set; }

    /// <summary>
    ///     区域
    /// </summary>
    public string Area { get; set; }


    /// <summary>
    ///     Url Key/前端Key
    /// </summary>
    public string UrlKey { get; set; }

    /// <summary>
    ///     前端对应URL 地址/代码等
    ///     例如：/user/index
    ///     例如：userIndex
    ///     例如：userEdit
    ///     例如：https://www.baidu.com
    /// </summary>
    public string Url { get; set; }

    /// <summary>
    ///     URL 地址参数(例如：?a=1&b=2)
    /// </summary>
    public string UrlPars { get; set; }

    /// <summary>
    ///     多语言key
    /// </summary>
    public string I18nKey { get; set; }

    /// <summary>
    ///     图标
    /// </summary>
    public string Icon { get; set; }

    /// <summary>
    ///     顺序(按从小到大排序)
    /// </summary>
    public int Sort { get; set; }

    /// <summary>
    ///     备注
    /// </summary>
    public string Remark { get; set; }


    /// <summary>
    ///     打开方式（字典 0 无， 1内链 2外链）
    ///     Url(例如：HtAdmin/User/Index或https://www.baidu.com/xxxxx)
    /// </summary>
    public MenuOpenType OpenType { get; set; }

    /// <summary>
    ///     外链
    /// </summary>
    public string Href { get; set; }

    /// <summary>
    ///     是否启用
    /// </summary>
    public bool IsEnable { get; set; }

    /// <summary>
    ///     是否隐藏菜单
    /// </summary>
    public bool IsHideMenu { get; set; }


    /// <summary>
    ///     是否隐藏角色
    /// </summary>
    public bool IsHideRole { get; set; }

    /// <summary>
    ///     是否开发用的，如果为true，只有开发账号可以使用
    /// </summary>
    public bool IsDeveloper { get; set; }

    /// <summary>
    ///     是否手动添加，手动添加的不自动删除
    /// </summary>
    public bool IsManualAdd { get; set; }

    /// <summary>
    ///     是否自动生成菜单/系统菜单；系统菜单和自动生成菜单禁止自动删除
    /// </summary>
    public bool IsSystem { get; set; }


    /// <summary>
    ///     是否菜单
    ///     用于区分Action是否是菜单
    /// </summary>
    public bool IsMenu { get; set; }

    /// <summary>
    ///     是否需要权限
    ///     true:需要权限
    ///     false:开放权限
    /// </summary>
    public bool IsPermission { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        return [];
    }
}